﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
//未完成
//int comFun(int* a, int* b)
//{
//	return (*a - *b);
//}
//int search(int* nums, int numsSize, int x)
//{
//	int i;
//	for (i = 0; i < numsSize; i++)
//	{
//		if (nums[i] == x)
//		{
//			return i;
//		}
//	}
//}
//int dominantIndex(int* nums, int numsSize)
//{
//	int i;
//	int* nums1 = (int*)malloc(sizeof(int) * numsSize);
//	for (i = 0; i < numsSize; i++)
//	{
//		nums1[i] = nums[i];
//	}
//	qsort(nums1, numsSize, sizeof(int), comFun);
//	if (nums1[0] > nums1[numsSize - 1])
//	{
//		if (nums1[0] >= 2 * nums1[1])
//			return search(nums, numsSize, nums1[0]);
//	}
//	else if (nums1[0] < nums1[numsSize - 1])
//	{
//		if (nums[numsSize - 1] > 2 * nums[numsSize - 2])
//			return search(nums, numsSize, nums1[numsSize - 1]);
//	}
//	else
//	{
//		return -1;
//	}
//	return -1;
//}
//int main()
//{
//	int arr[] = { 23,12,445,6,43,6,45,3,23,2 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int a = dominantIndex(arr, sz);
//	return 0;
//}
//

//给定一个非负整数数组 nums，  nums 中一半整数是 奇数 ，一半整数是 偶数 。
//对数组进行排序，以便当 nums[i] 为奇数时，i 也是 奇数 ；当 nums[i] 为偶数时， i 也是 偶数 。未完成
//
//int* sortArrayByParityII(int* nums, int numsSize, int* returnSize) {
//	int* nums1 = (int*)malloc(sizeof(int) * numsSize);
//	int i;
//	for (i = 0; i < numsSize; i++)
//	{
//		nums1[i] = nums[i];
//	}
//
//}
//int main()
//{
//	int arr[] = { 3,1,4,2 };
//	int i;
//	int* arrSize=NULL;
//	sortArrayByParityII(arr, 4, arrSize);
//	for (i = 0; i < 4; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//完成
//double average(int* salary, int salarySize) 
//{
//	double sum = 0;
//	int mid = salary[0];
//	int max = salary[0];
//	int a = 0;
//	int i;
//	for (i = 0; i < salarySize; i++)
//	{
//		if (mid > salary[i])
//		{
//			mid = salary[i];
//		}
//		if(max<salary[i])
//		{
//			max = salary[i];
//		}
//		sum += salary[i];
//	}
//	sum = (sum - mid - max) / (salarySize - 2);
//	return sum;
//}

//给你一个正方形矩阵 mat，请你返回矩阵对角线元素的和。
//请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。
//没完成
//#include<math.h>
//int diagonalSum(int** mat, int matSize, int* matColSize) {
//    int n = 0, j, i, sum = 0;
//    n = sqrt(matSize);
//    for (i = 0; i < n; i++)
//    {
//        for (j = 0; j < n; j++)
//        {
//            if (i == j || i + j == n - 1)
//            {
//                sum += mat[i][j];
//            }
//        }
//    }
//    return sum;
//}
//int main()
//{
//    int arr[][3] = { 1,2,3,4,5,6,7,8,9 };
//    int n = 1;
//    int* pn = &n;
//    int a = diagonalSum(arr, 9,pn );
//    return 0;
//}

//给你一个字符串 date ，按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。
//判定是否是闰年
//atio函数：C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数（类型为 int 型）
//如"2022"转换成2022
//int dayOfYear(char* date) {
//    int i, year, mon, day, count = 0;
//    int month[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//    char* str = NULL;
//    str = (char*)malloc(sizeof(char) * 11);
//
//    strcpy(str, date);
//    str[4] = '\0';
//    year = atoi(str);
//
//    strcpy(str, date + 5);
//    str[2] = '\0';
//    mon = atoi(str);
//
//    strcpy(str, date + 8);
//    day = atoi(str);
//
//    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) month[1] = 29;
//
//    for (i = 0; i < mon - 1; i++) {
//        count += month[i];
//    }
//    count += day;
//
//    return count;
//}

//请你编写一个程序来计算两个日期之间隔了多少天。日期以字符串形式给出，格式为 YYYY - MM - DD
//层层分析，有条有理。
//void A(char* date, int* year, int* month, int* day)
//{
//	//算出年 月 日
//	/*char* str = NULL;
//	str = (char*)malloc(sizeof(char) * 11);
//	
//	strcpy(str, date);
//	str[4] = '\0';
//	*year = atoi(str);
//	
//	strcpy(str, date + 5);
//	str[2] = '\0';
//	*month = atoi(str);
//	
//	strcpy(str, date + 8);
//	*day = atoi(str);*/
//
//	//算出年 月 日
//	int i = 0;
//
//	while (*date)
//	{
//		if (*date >= 48 && *date <= 57)
//		{
//			i++;
//
//			if (i <= 4)
//				*year = (*year) * 10 + ((*date) - 48) % 10;
//			else if (i <= 6)
//				*month = (*month) * 10 + ((*date) - 48) % 10;
//			else
//				*day = (*day) * 10 + ((*date) - 48) % 10;
//		}
//
//		date++;
//	}
//}
//
//void swap(int* a, int* b)
//{
//	//将大的时间交给date1；
//	int temp;
//
//	temp = *a;
//	*a = *b;
//	*b = temp;
//}
//
//int run(int year)
//{
//	//判断是否是闰年
//	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
//		return 1;
//
//	return 0;
//}
//
//int B(int year, int month, int day)
//{
//	//算出月 日所包含的天数
//	int sum = 0;
//	char mon[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//
//	for (int i = 1; i < month; i++)
//	{
//		sum += mon[i];
//	}
//
//	sum += day;
//
//	if (month > 2 && run(year) == 1)
//		sum += 1;
//
//
//
//	return sum;
//}
//
//
//
//int daysBetweenDates(char* date1, char* date2)
//{
//	int sum = 0;
//	int year1 = 0, month1 = 0, day1 = 0;
//	int year2 = 0, month2 = 0, day2 = 0;
//
//	A(date1, &year1, &month1, &day1);
//	A(date2, &year2, &month2, &day2);
//
//	if (year1 < year2 || (year1 == year2 && month1 < month2) || (year1 == year2 && month1 == month2 && day1 < day2))
//	{
//		swap(&year1, &year2);
//		swap(&month1, &month2);
//		swap(&day1, &day2);
//	}
//
//	//算出相差几年的天数
//	for (int i = year2; i < year1; i++)
//	{
//		if (run(i) == 1)
//			sum += 366;
//		else
//			sum += 365;
//	}
//
//
//	sum = sum + B(year1, month1, day1) - B(year2, month2, day2);
//
//	return sum;
//}
//
//int main()
//{
//	int a;
//	char arr1[] = "2022-10-15";
//	char arr2[] = "2021-12-01";
//	printf("%d\n",a=daysBetweenDates(arr1, arr2));
//	return 0;
//}

//#include<stdbool.h>
////给你一个日期，请你设计一个算法来判断它是对应一周中的哪一天。
////输入为三个整数：day、month 和 year，分别表示日、月、年。
////您返回的结果必须是这几个值中的一个 { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }。
//
//bool is_leap(int year)//判断闰年
//{
//    return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
//}
//
//char* dayOfTheWeek(int day, int month, int year)
//{
//    char* ans[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
//    int m[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//    int sum = 0;
//    for (int i = 1971; i < year; i++)
//    {
//        sum += is_leap(i) ? 366 : 365;
//    }
//
//    for (int i = 0; i < month - 1; i++)
//    {
//        sum += m[i];
//    }
//
//    if (month > 2 && is_leap(year)) //注意大于2月的情况才需要考虑是否要额外加1
//        sum += 1 + day;
//    else
//        sum += day;//sum为从1971年到现在的天数。
//    return ans[(5 + sum - 1) % 7];
//}
//int main()
//{
//    char* arr1 = NULL;
//    int year = 2021;
//    int month = 6;
//    int day = 21;
//    arr1 = dayOfTheWeek(day, month, year);
//    printf("%s\n", arr1);
//    return 0;
//}

//没开始做

//给你一个 m* n 的矩阵，矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。
//幸运数 是指矩阵中满足同时下列两个条件的元素：
//在同一行的所有元素中最小
//在同一列的所有元素中最大
//matrix应该是矩阵元素个数，那么matrixColSize是什么？
//int* luckyNumbers(int** matrix, int matrixSize, int* matrixColSize, int* returnSize) {
//
//}

//给你两个整数数组 arr1 ， arr2 和一个整数 d ，请你返回两个数组之间的 距离值 。
//int findTheDistanceValue(int* arr1, int arr1Size, int* arr2, int arr2Size, int d) {
//	int i, j, n, sum = 0;
//	for (i = 0; i < arr1Size; i++)
//	{
//		for (j = 0; j < arr2Size; j++)
//		{
//			if (arr1[i] < arr2[j])
//			{
//				n = arr2[j] - arr1[i];
//				if (n <= d)
//				{
//					break;
//				}
//			}
//			else
//			{
//				n = arr1[i] - arr2[j];
//				if (n <= d)
//				{
//					break;
//				}
//			}
//		}
//		if (j == arr2Size)
//		{
//			sum++;
//		}
//	}
//	return sum;
//}

//给你一个非负整数 num ，请你返回将它变成 0 所需要的步数。 如果当前数字是偶数，你需要把它除以 2 ；否则，减去 1
//int numberOfSteps(int num) {
//	if (num == 0)
//		return 0;
//	int n=0;
//	while (num)
//	{
//		if (num % 2 == 0)
//		{
//			num /= 2;
//			n++;
//		}
//		else
//		{
//			num -= 1;
//			n++;
//		}
//	}
//	return n;
//}

//给你一个整数数组 nums，请你选择数组的两个不同下标 i 和 j，使 (nums[i]-1)*(nums[j]-1) 取得最大值。
int maxProduct(int* nums, int numsSize) {
	int i, j, max = (nums[0]-1) * (nums[1]-1);
	for (i = 0; i < numsSize - 1; i++)
	{
		for (j = i + 1; j < numsSize; j++)
		{
			if (((nums[i] - 1) * (nums[j] - 1))>max)
			{
				max = ((nums[i]-1) * (nums[j]-1));
			}
		}
	}
	return max;
}
int main()
{
	int arr1[] = { 3,4,5,2 };
	int a = maxProduct(arr1, 4);
	return 0;
}